﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data.Sql;
//using Tibet.Logica;


namespace ConsoleApplication2
{
    public class Proyecto
    {

        private int _id;
        private int _nombre;
        private String _status;
        private String _lenguaje;
        private String _ruta;
        private String _miCliente;


        private List<DateTime> _fechas;


        //Get y Set
        public List<DateTime> Fechas
        {
            get { return _fechas; }
            set { _fechas = value; }
        }


        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public int Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        public String Status
        {
            get { return _status; }
            set { _status = value; }
        }

        public String Lenguaje
        {
            get { return _lenguaje; }
            set { _lenguaje = value; }
        }

        public String Ruta
        {
            get { return _ruta; }
            set { _ruta = value; }
        }

        public String MiCliente
        {
            get { return _miCliente; }
            set { _miCliente = value; }
        }


        //Metodos
        public bool CrearProyecto(Proyecto proyecto)
        {
            //la variable result se inicia en falso,y cambia y devuelve true sí se crea
            bool result = false;

            return true;// valor por defecto para probar caso de exit
        }

        //Método que me permite modificar el nombre dado dicho proyecto
        //la variable cambia y devuelve true sí se realiza exitosamente
        public bool ModificarNombreProyecto(int idProyecto)
        {
            bool resp = false;
            //la variable resp se inicia en falso,y cambia y devuelve true sí se crea
            return true;// valor por defecto para probar caso de exito
        }


        //Método que me permite archivar proyecto
        //Se le aplica fecha de culminación y no aparecerán como proyectos activos
        //la variable resp cambia y Devuelve true sí se ejecuta correctamente
        public bool ArchivarProyecto(int idProyecto)
        {
            bool resp = false;

            return true;// valor por defecto para probar caso de exito
        }

        //Método que me permite validar que exista un líder en un proyecto
        //Devuelve true sí se válida q existe
        public bool ValidarLider()
        {
            bool resp = false;

            return true;// valor por defecto para probar caso de exito
        }

        //Método que me permite validar que sólo existe un cliente por proyecto
        //la variable resp se inicialización en falso,ycambia y devuelve true
        //sí se ejecuta exitosamente
        public bool ValidarCliente(int idProyecto)
        {
            bool resp = false;

            return true;// valor por defecto para probar caso de exito
        }


        //Método que me permite consultar todos los proyectos activos existentes
        public List<Proyecto> ConsultarProyecto()
        {
            List<Proyecto> lista = new List<Proyecto>();
            return lista;
        }

        public Proyecto ConsultarProyectoPorId(int id)
        {
            Proyecto proyecto = new Proyecto();
            return proyecto;
        }


        public void ConexionBdProyecto()
        {
            try
            {
                /*Conexcion con la base de datos*/
            }
            catch (SqlException sql)
            {
                Console.WriteLine("Se ha presentado un error en la conexion con la base de datos");
            }
            catch (Exception e)
            {
                Console.WriteLine("Ha ocurrido un error con imprevisto");
            }
        }

        public Proyecto ConsultarDatosProyecto(int id)
        {
            Proyecto proyectoActual;
            try
            {
                proyectoActual = new Proyecto();
                proyectoActual.Id = 0;                       //lo coloque asi para que la prueba pasara
                //el metodo seria un select BD que me retorne un resultset
                this.ConexionBdProyecto();                   //invoca la conexion de la base de datos.
                return proyectoActual;
            }
            catch (SqlException sql)
            {
                Console.WriteLine("Se ha presentado un error en la conexion con la base de datos");
                return null;

            }
            catch (Exception e)
            {
                Console.WriteLine("Ha ocurrido un error con imprevisto");
                return null;
            }

        }

        public string ConsultaCorreoLider()
        {
            return "probando";
        }

        public void RegistrarFecha(DateTime fecha)
        {

        }

        public bool ModificarFecha()
        {
            return false;
        }

        public bool AplicarPerfilReglas()
        {
            return false;
        }

        public bool ValidarDesarrollador()
        {
            return true;                      //valor por defecto para que la prueba funcione(caso exito)
        }

        public bool ValidarSoloLetras()
        {
            return true;                      //valor por defecto para que la prueba funcione(caso exito)
        }

        public string BuscarFecha()             //Retorna la fecha de algun proyecto
        {
            return "01/08/2009";
        }                                       //valor por defecto para que la prueba funcione(caso exito)

        public bool ModificarNumIntegrantes()       //Metodo para modificar en numero de integrantes de un proyecto
        {
            return true;
        }                                           //valor por defecto para que la prueba funcione(caso exito)

        public bool ModificarIntegranteProyecto()   //metodo para modificar la modificacion de algun integrante en el proyecto
        {
            return true;
        }                                           //valor por defecto para que la prueba funcione(caso exito)

        public bool AplicarPerfilMetricas()         // metodo que indica si un proyecto se le agrego Perfil de Metricas
        {
            return true;
        }                                           //valor por defecto para que la prueba funcione(caso exito)

        public bool AgregarDesarrollador(Usuario desarrollador)
        {
            return true;
        }

        public bool ConsultarPerfilReglas()
        {
            return true;
        }

        public bool EliminarDesarrollador()
        {
            return true;
        }

        public bool ValidarEspacioBlanco()
        {
            return true;
        }

        public bool ModificarIntegrantesProyecto()
        {
            return true;
        }

        public bool CambiarPerfilMetricas()
        {
            return true;
        }

        public bool ModificarProyecto()
        {
            return true;
        }
    }
}